高等数学

Wang Haihua

🍈 🍉🍊 🍋 🍌


优化问题的数值解法

在大多数实际问题中,仅用代数方法是找不到临界点的。例如,考虑以下函数:

$$ f(x) = x \mathrm{e}^x + x $$

临界点方程为:

$$ \mathrm{e}^x (1 + x) + 1 = 0 $$

我们不能用简单的代数来解决,此时我们可以采用数值解法(Numerical methods for optimization)

在本文中,我们将介绍一种常用迭代方法近似求解这类问题——梯度下降算法(Steepest descent algorithm)。基本思想是从猜测$x_0$开始,然后使用更新规则使我们更接近临界点。

梯度下降

寻找局部极小值最简单的数值方法是最速下降法(steepest descent method),也叫梯度下降法 (gradient descent)。

这种算法的过程是:

drawing

注意,步长$\eta$需要足够小,否则我们可能会“跳过”局部最小值的位置。

例子

考虑如下方程

$$ f(x) = x \mathrm{e}^x + x $$

我们无法得到临界点的简单公式,因此需要使用最速下降法。函数的导数为:

$$ \frac{f(x)}{d x} = \mathrm{e}^x (1 + x) + 1 $$

因此,更新规则是:

$$ x_{t+1} = x_t - \eta \mathrm{e}^{x_t} (1 + x_t) + 1 $$